package com.mianyang.zhangsan.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mianyang.zhangsan.model.dto.SecAccountRole;
import com.mianyang.zhangsan.model.entity.SecAccount;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mianyang.zhangsan.model.entity.SecAuthority;
import com.mianyang.zhangsan.model.entity.SecRole;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author jiangjr
 * @since 2022-10-23
 */
public interface ISecAccountService extends IService<SecAccount> {

    /**
     * 根据用户名查询账户信息
     * @param username 用户名
     * @return 账户信息
     */
    SecAccount selectAccountByUsername(String username);

    /**
     * 查询当前用户下级用户
     * @param userId 用户id
     * @return 账户信息
     */
    List<SecAccount> selectLowerAccount(Long userId);

    /**
     * 查询当前用户信息
     * @param userId 用户id
     * @return 账户信息
     */
    SecAccount selectSelfAccount(Long userId);

    /**
     * 修改账户信息
     * @param account 账户信息
     */
    void updateAccount(SecAccount account);

    /**
     * 查询当前用户权限
     * @return 权限集合
     */
    List<SecAuthority> selectCurrentAccountAuthority();

    /**
     * 查询当前用户权限
     * @return 权限集合
     */
    List<SecAuthority> selectCurrentAccountAuthority(Long accountId);

    /**
     * 查询所有的用户
     * @param account 条件
     * @param current 当前页码
     * @param pageSize 分页大小
     * @return 用户信息
     */
    Page<SecAccount> selectAccounts(SecAccount account, int current, int pageSize);

    /**
     * 查询用户的角色信息以及所有的角色信息
     * @param accountId 用户编号
     * @return 角色信息
     */
    SecAccountRole selectAccountRoles(Long accountId);
}
